//go:build wireinject
// +build wireinject

// The build tag makes sure the stub is not built in the final build.

package main

import (
	"github.com/go-kratos/kratos/v2"
	"github.com/go-kratos/kratos/v2/log"
	"github.com/google/wire"
	command_service "gotham-plan-manage/internal/app/command_service"
	"gotham-plan-manage/internal/app/consumer"
	"gotham-plan-manage/internal/app/daily_user_handler"
	"gotham-plan-manage/internal/app/query_service"
	"gotham-plan-manage/internal/conf"
	"gotham-plan-manage/internal/domain/service"
	"gotham-plan-manage/internal/infra/database/mysql/plan/repo"
	"gotham-plan-manage/internal/interfaces/facade"
	"gotham-plan-manage/internal/startup"
)

// wireApp init kratos application.
func wireApp(*conf.Server, *conf.Data, log.Logger) (*kratos.App, func(), error) {
	panic(wire.Build(
		facade.ProviderSet,
		startup.ProviderSet,
		repo.ProviderSet,
		query_service.ProviderSet,
		command_service.ProviderSet,
		service.ProviderSet,
		consumer.ProviderSet,
		daily_user_handler.ProviderSet,
		newApp))
}
